package com.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.blog.entity.SysUser;
import com.blog.util.dto.AjaxResult;
import com.blog.util.xmSelect.XmSelectData;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;

/**
 * @author cgx
 * @Date 2021/8/16 22:33
 */
@Service
public interface SysUserService extends IService<SysUser> {

    /**
     * 用户登录整合shiro
     * @param username 登录账号
     * @param password 登录密码
     * @return SysUser 用户
     * @throws Exception 登录抛出异常
     */
    public SysUser login(String username, String password) throws Exception;

    /**
     * 用户导入，解析excel数据
     * @param workbook excel
     * @param headers 导入文件的标题
     * @return user集合
     */
    AjaxResult parseExcelData(Workbook workbook, String[] headers);

    /**
     * 修改用户状态为-1
     * @param id
     * @return
     */
    void lockUserById(String id);

    /**
     * 后台获取用户表格
     * @param username
     * @param sex
     * @param emailOrPhone
     * @param userRoleId
     * @return
     */
    List<SysUser> tableList(String username, Integer sex, String emailOrPhone, Long userRoleId);

    /**
     * 后台表格搜索获取角色下拉选
     * @return
     */
    List<XmSelectData> getRoleXmSelect(String userId);

    /**
     * 获取用户的角色字符
     * @param id
     * @return
     */
    Set<String> selectRoleSign(String id);

    /**
     * 获取用户权限字符
     * @param id
     * @return 例：admin:article:view
     */
    Set<String> selectPermsByUserId(String id);

    /**
     * 保存用户
     * @param user
     * @return
     */
    void saveUser(SysUser user);
}
